/* eslint-disable class-methods-use-this */
import _axios, { get, put, _delete } from '@/lin/plugin/axios'

// 我们通过 class 这样的语法糖使模型这个概念更加具象化，其优点：耦合性低、可维护性。
class Accept {
  // constructor() {}

  // 类中的方法可以代表一个用户行为
  async createAccept(data) {
    return _axios({
      method: 'post',
      url: 'v1/accept',
      data,
    })
  }

  // 在这里通过 async await 语法糖让代码同步执行
  // 1. await 一定要搭配 async 来使用
  // 2. await 后面跟的是一个 Promise 对象
  async getAccept(id) {
    const res = await get(`v1/accept/${id}`)
    return res
  }

  async editAccept(id, info) {
    const res = await put(`v1/accept/${id}`, info)
    return res
  }

  async deleteAccept(id) {
    const res = await _delete(`v1/accept/${id}`)
    return res
  }

  async exportAllExcel(data, params) {
    return _axios({
      method: 'post',
      responseType: 'blob',
      url: 'v1/accept/exportAllExcel',
      data,
      params,
    })
  }

  async exportAllWord(data, params) {
    return _axios({
      method: 'post',
      responseType: 'blob',
      url: 'v1/accept/exportAllWord',
      data,
      params,
    })
  }

  async exportAllPdf(data, params) {
    return _axios({
      method: 'post',
      responseType: 'blob',
      url: 'v1/accept/exportAllPdf',
      data,
      params,
    })
  }

  async getAccepts() {
    return _axios({
      method: 'get',
      url: 'v1/accept',
      handleError: true,
    })
  }

  async getStatCurMonth() {
    return _axios({
      method: 'get',
      url: 'v1/accept/statCurMonth',
      handleError: true,
    })
  }

  async getStatCurRatio() {
    return _axios({
      method: 'get',
      url: 'v1/accept/statCurRatio',
      handleError: true,
    })
  }

  async getStatCurYear() {
    return _axios({
      method: 'get',
      url: 'v1/accept/statCurYear',
      handleError: true,
    })
  }
}

export default new Accept()
